<!doctype html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
.node:hover path,
.node.current path,
.node:active polygon,
.node:hover polygon,
.node.current polygon {
  stroke: fuchsia;
  stroke-width: 2;
}

.edge:active path,
.edge:hover path,
.edge.current path,
.edge:active ellipse,
.edge:hover ellipse,
.edge.current ellipse {
  stroke: url(#edgeGradient);
  stroke-width: 3;
  stroke-opacity: 1;
}

.edge:active polygon,
.edge:hover polygon,
.edge.current polygon {
  stroke: fuchsia;
  stroke-width: 3;
  fill: fuchsia;
  stroke-opacity: 1;
  fill-opacity: 1;
}

.edge:active text,
.edge:hover text {
  fill: fuchsia;
}

.cluster path {
  stroke-width: 3;
}

.cluster:active path,
.cluster:hover path {
  fill: #ffff0011;
}

div.hint {
  background-color: #000000aa;
  color: white;
  font-family: Arial, Helvetica, sans-serif;
  border-radius: 1rem;
  position: fixed;
  top: calc(50% - 4em);
  right: calc(50% - 10em);
  border: none;
  padding: 1em 3em 1em 1em;
}

.hint button {
  position: absolute;
  font-weight: bolder;
  right: 0.6em;
  top: 0.6em;
  color: inherit;
  background-color: inherit;
  border: 1px solid currentColor;
  border-radius: 1em;
  margin-left: 0.6em;
}

.hint a {
  color: inherit;
}

#button_help {
  color: white;
  background-color: #00000011;
  border-radius: 1em;
  position: fixed;
  top: 1em;
  right: 1em;
  font-size: 24pt;
  font-weight: bolder;
  width: 2em;
  height: 2em;
  border: none;
}

#button_help:hover {
  cursor: pointer;
  background-color: #00000077;
}

@media print {
  #button_help {
    display: none;
  }

  div.hint {
    display: none;
  }
}

    </style>
  </head>
  <body>
    <button id="button_help">?</button>
    <div id="hints" class="hint" style="display: none">
      <button id="close-hints">x</button>
      <span id="hint-text"></span>
      <ul>
        <li><b>Hover</b> - highlight</li>
        <li><b>Right-click</b> - pin highlight</li>
        <li><b>ESC</b> - clear</li>
      </ul>
    </div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.0.4 (20251115.1723)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="962pt" height="762pt"
 viewBox="0.00 0.00 962.00 762.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 757.75)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-757.75 958.25,-757.75 958.25,4 -4,4"/>
<!-- baseline&#45;violations.schema.mjs -->
<g id="node1" class="node">
<title>baseline&#45;violations.schema.mjs</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/baseline-violations.schema.mjs" xlink:title="baseline&#45;violations.schema.mjs">
<path fill="darkgreen" stroke="darkgreen" d="M503.58,-571.75C503.58,-571.75 371.17,-571.75 371.17,-571.75 368.21,-571.75 365.25,-568.79 365.25,-565.83 365.25,-565.83 365.25,-559.92 365.25,-559.92 365.25,-556.96 368.21,-554 371.17,-554 371.17,-554 503.58,-554 503.58,-554 506.54,-554 509.5,-556.96 509.5,-559.92 509.5,-559.92 509.5,-565.83 509.5,-565.83 509.5,-568.79 506.54,-571.75 503.58,-571.75"/>
<text xml:space="preserve" text-anchor="start" x="373.25" y="-559.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffffcc">baseline&#45;violations.schema.mjs</text>
</a>
</g>
</g>
<!-- violations.mjs -->
<g id="node2" class="node">
<title>violations.mjs</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/violations.mjs" xlink:title="violations.mjs">
<path fill="#ffffcc" stroke="black" d="M628.08,-599.75C628.08,-599.75 568.42,-599.75 568.42,-599.75 565.46,-599.75 562.5,-596.79 562.5,-593.83 562.5,-593.83 562.5,-587.92 562.5,-587.92 562.5,-584.96 565.46,-582 568.42,-582 568.42,-582 628.08,-582 628.08,-582 631.04,-582 634,-584.96 634,-587.92 634,-587.92 634,-593.83 634,-593.83 634,-596.79 631.04,-599.75 628.08,-599.75"/>
<text xml:space="preserve" text-anchor="start" x="570.5" y="-587.2" font-family="Helvetica,sans-Serif" font-size="9.00">violations.mjs</text>
</a>
</g>
</g>
<!-- baseline&#45;violations.schema.mjs&#45;&gt;violations.mjs -->
<g id="edge1" class="edge">
<title>baseline&#45;violations.schema.mjs&#45;&gt;violations.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M490.25,-572.02C490.25,-581.54 490.25,-595.08 490.25,-595.08 490.25,-595.08 553.26,-595.08 553.26,-595.08"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="553.26,-597.18 559.26,-595.08 553.26,-592.98 553.26,-597.18"/>
</g>
<!-- mini&#45;dependency&#45;type.mjs -->
<g id="node22" class="node">
<title>mini&#45;dependency&#45;type.mjs</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/mini-dependency-type.mjs" xlink:title="mini&#45;dependency&#45;type.mjs">
<polygon fill="white" stroke="none" points="823.75,-682.75 699.75,-682.75 699.75,-665 823.75,-665 823.75,-682.75"/>
<polyline fill="none" stroke="black" points="699.75,-665 823.75,-665"/>
<text xml:space="preserve" text-anchor="start" x="707.75" y="-670.2" font-family="Helvetica,sans-Serif" font-size="9.00">mini&#45;dependency&#45;type.mjs</text>
</a>
</g>
</g>
<!-- violations.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs -->
<g id="edge66" class="edge">
<title>violations.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M634.32,-593.25C668.05,-593.25 713.25,-593.25 713.25,-593.25 713.25,-593.25 713.25,-655.6 713.25,-655.6"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="711.15,-655.6 713.25,-661.6 715.35,-655.6 711.15,-655.6"/>
</g>
<!-- rule&#45;summary.mjs -->
<g id="node24" class="node">
<title>rule&#45;summary.mjs</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/rule-summary.mjs" xlink:title="rule&#45;summary.mjs">
<path fill="#ffffcc" stroke="black" d="M800.21,-650.75C800.21,-650.75 723.29,-650.75 723.29,-650.75 720.33,-650.75 717.38,-647.79 717.38,-644.83 717.38,-644.83 717.38,-638.92 717.38,-638.92 717.38,-635.96 720.33,-633 723.29,-633 723.29,-633 800.21,-633 800.21,-633 803.17,-633 806.12,-635.96 806.12,-638.92 806.12,-638.92 806.12,-644.83 806.12,-644.83 806.12,-647.79 803.17,-650.75 800.21,-650.75"/>
<text xml:space="preserve" text-anchor="start" x="725.38" y="-638.2" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;summary.mjs</text>
</a>
</g>
</g>
<!-- violations.mjs&#45;&gt;rule&#45;summary.mjs -->
<g id="edge67" class="edge">
<title>violations.mjs&#45;&gt;rule&#45;summary.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M586.25,-599.91C586.25,-612.95 586.25,-635.5 586.25,-635.5 586.25,-635.5 707.98,-635.5 707.98,-635.5"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="707.98,-637.6 713.98,-635.5 707.98,-633.4 707.98,-637.6"/>
</g>
<!-- violation&#45;type.mjs -->
<g id="node32" class="node">
<title>violation&#45;type.mjs</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/violation-type.mjs" xlink:title="violation&#45;type.mjs">
<polygon fill="white" stroke="none" points="805.38,-618.75 718.12,-618.75 718.12,-601 805.38,-601 805.38,-618.75"/>
<polyline fill="none" stroke="black" points="718.12,-601 805.38,-601"/>
<text xml:space="preserve" text-anchor="start" x="726.12" y="-606.2" font-family="Helvetica,sans-Serif" font-size="9.00">violation&#45;type.mjs</text>
</a>
</g>
</g>
<!-- violations.mjs&#45;&gt;violation&#45;type.mjs -->
<g id="edge68" class="edge">
<title>violations.mjs&#45;&gt;violation&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M610.25,-600.14C610.25,-603.51 610.25,-606.5 610.25,-606.5 610.25,-606.5 708.9,-606.5 708.9,-606.5"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="708.9,-608.6 714.9,-606.5 708.9,-604.4 708.9,-608.6"/>
</g>
<!-- cache&#45;options.mjs -->
<g id="node3" class="node">
<title>cache&#45;options.mjs</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/cache-options.mjs" xlink:title="cache&#45;options.mjs">
<path fill="#ffffcc" stroke="black" d="M637.46,-445.75C637.46,-445.75 559.04,-445.75 559.04,-445.75 556.08,-445.75 553.12,-442.79 553.12,-439.83 553.12,-439.83 553.12,-433.92 553.12,-433.92 553.12,-430.96 556.08,-428 559.04,-428 559.04,-428 637.46,-428 637.46,-428 640.42,-428 643.38,-430.96 643.38,-433.92 643.38,-433.92 643.38,-439.83 643.38,-439.83 643.38,-442.79 640.42,-445.75 637.46,-445.75"/>
<text xml:space="preserve" text-anchor="start" x="561.12" y="-433.2" font-family="Helvetica,sans-Serif" font-size="9.00">cache&#45;options.mjs</text>
</a>
</g>
</g>
<!-- cache&#45;strategy&#45;type.mjs -->
<g id="node4" class="node">
<title>cache&#45;strategy&#45;type.mjs</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/cache-strategy-type.mjs" xlink:title="cache&#45;strategy&#45;type.mjs">
<polygon fill="white" stroke="none" points="818.12,-445.75 705.38,-445.75 705.38,-428 818.12,-428 818.12,-445.75"/>
<polyline fill="none" stroke="black" points="705.38,-428 818.12,-428"/>
<text xml:space="preserve" text-anchor="start" x="713.38" y="-433.2" font-family="Helvetica,sans-Serif" font-size="9.00">cache&#45;strategy&#45;type.mjs</text>
</a>
</g>
</g>
<!-- cache&#45;options.mjs&#45;&gt;cache&#45;strategy&#45;type.mjs -->
<g id="edge2" class="edge">
<title>cache&#45;options.mjs&#45;&gt;cache&#45;strategy&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M643.79,-436.88C643.79,-436.88 696.05,-436.88 696.05,-436.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="696.05,-438.98 702.05,-436.88 696.05,-434.78 696.05,-438.98"/>
</g>
<!-- compound&#45;donot&#45;follow&#45;type.mjs -->
<g id="node5" class="node">
<title>compound&#45;donot&#45;follow&#45;type.mjs</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-donot-follow-type.mjs" xlink:title="compound&#45;donot&#45;follow&#45;type.mjs">
<polygon fill="white" stroke="none" points="673,-413.75 523.5,-413.75 523.5,-396 673,-396 673,-413.75"/>
<polyline fill="none" stroke="black" points="523.5,-396 673,-396"/>
<text xml:space="preserve" text-anchor="start" x="531.5" y="-401.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;donot&#45;follow&#45;type.mjs</text>
</a>
</g>
</g>
<!-- re&#45;as&#45;strings&#45;type.mjs -->
<g id="node6" class="node">
<title>re&#45;as&#45;strings&#45;type.mjs</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/re-as-strings-type.mjs" xlink:title="re&#45;as&#45;strings&#45;type.mjs">
<polygon fill="white" stroke="none" points="954.25,-260.75 850.5,-260.75 850.5,-243 954.25,-243 954.25,-260.75"/>
<polyline fill="none" stroke="black" points="850.5,-243 954.25,-243"/>
<text xml:space="preserve" text-anchor="start" x="858.5" y="-248.2" font-family="Helvetica,sans-Serif" font-size="9.00">re&#45;as&#45;strings&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;donot&#45;follow&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge3" class="edge">
<title>compound&#45;donot&#45;follow&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M673.33,-404.88C748.87,-404.88 854.25,-404.88 854.25,-404.88 854.25,-404.88 854.25,-270.01 854.25,-270.01"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="856.35,-270.01 854.25,-264.01 852.15,-270.01 856.35,-270.01"/>
</g>
<!-- compound&#45;exclude&#45;type.mjs -->
<g id="node7" class="node">
<title>compound&#45;exclude&#45;type.mjs</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-exclude-type.mjs" xlink:title="compound&#45;exclude&#45;type.mjs">
<polygon fill="white" stroke="none" points="827.5,-82.75 696,-82.75 696,-65 827.5,-65 827.5,-82.75"/>
<polyline fill="none" stroke="black" points="696,-65 827.5,-65"/>
<text xml:space="preserve" text-anchor="start" x="704" y="-70.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;exclude&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;exclude&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge4" class="edge">
<title>compound&#45;exclude&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M827.56,-73.88C874.09,-73.88 928.25,-73.88 928.25,-73.88 928.25,-73.88 928.25,-233.78 928.25,-233.78"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="926.15,-233.78 928.25,-239.78 930.35,-233.78 926.15,-233.78"/>
</g>
<!-- compound&#45;focus&#45;type.mjs -->
<g id="node8" class="node">
<title>compound&#45;focus&#45;type.mjs</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-focus-type.mjs" xlink:title="compound&#45;focus&#45;type.mjs">
<polygon fill="white" stroke="none" points="822.25,-225.75 701.25,-225.75 701.25,-208 822.25,-208 822.25,-225.75"/>
<polyline fill="none" stroke="black" points="701.25,-208 822.25,-208"/>
<text xml:space="preserve" text-anchor="start" x="709.25" y="-213.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;focus&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;focus&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge5" class="edge">
<title>compound&#45;focus&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M822.69,-216.88C850.03,-216.88 876.25,-216.88 876.25,-216.88 876.25,-216.88 876.25,-233.65 876.25,-233.65"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="874.15,-233.65 876.25,-239.65 878.35,-233.65 874.15,-233.65"/>
</g>
<!-- compound&#45;highlight&#45;type.mjs -->
<g id="node9" class="node">
<title>compound&#45;highlight&#45;type.mjs</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-highlight-type.mjs" xlink:title="compound&#45;highlight&#45;type.mjs">
<polygon fill="white" stroke="none" points="665.5,-321.75 531,-321.75 531,-304 665.5,-304 665.5,-321.75"/>
<polyline fill="none" stroke="black" points="531,-304 665.5,-304"/>
<text xml:space="preserve" text-anchor="start" x="539" y="-309.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;highlight&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;highlight&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge6" class="edge">
<title>compound&#45;highlight&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M665.72,-312.88C740.66,-312.88 851.25,-312.88 851.25,-312.88 851.25,-312.88 851.25,-270.17 851.25,-270.17"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="853.35,-270.17 851.25,-264.17 849.15,-270.17 853.35,-270.17"/>
</g>
<!-- compound&#45;include&#45;only&#45;type.mjs -->
<g id="node10" class="node">
<title>compound&#45;include&#45;only&#45;type.mjs</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-include-only-type.mjs" xlink:title="compound&#45;include&#45;only&#45;type.mjs">
<polygon fill="white" stroke="none" points="836.5,-142.75 687,-142.75 687,-125 836.5,-125 836.5,-142.75"/>
<polyline fill="none" stroke="black" points="687,-125 836.5,-125"/>
<text xml:space="preserve" text-anchor="start" x="695" y="-130.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;include&#45;only&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;include&#45;only&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge7" class="edge">
<title>compound&#45;include&#45;only&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M832.25,-142.9C832.25,-170.02 832.25,-248.92 832.25,-248.92 832.25,-248.92 841.28,-248.92 841.28,-248.92"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="841.28,-251.02 847.28,-248.92 841.28,-246.82 841.28,-251.02"/>
</g>
<!-- compound&#45;reaches&#45;type.mjs -->
<g id="node11" class="node">
<title>compound&#45;reaches&#45;type.mjs</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/compound-reaches-type.mjs" xlink:title="compound&#45;reaches&#45;type.mjs">
<polygon fill="white" stroke="none" points="827.88,-260.75 695.62,-260.75 695.62,-243 827.88,-243 827.88,-260.75"/>
<polyline fill="none" stroke="black" points="695.62,-243 827.88,-243"/>
<text xml:space="preserve" text-anchor="start" x="703.62" y="-248.2" font-family="Helvetica,sans-Serif" font-size="9.00">compound&#45;reaches&#45;type.mjs</text>
</a>
</g>
</g>
<!-- compound&#45;reaches&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge8" class="edge">
<title>compound&#45;reaches&#45;type.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M828.36,-254.83C828.36,-254.83 841.32,-254.83 841.32,-254.83"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="841.32,-256.93 847.32,-254.83 841.32,-252.73 841.32,-256.93"/>
</g>
<!-- configuration.schema.mjs -->
<g id="node12" class="node">
<title>configuration.schema.mjs</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/configuration.schema.mjs" xlink:title="configuration.schema.mjs">
<path fill="darkgreen" stroke="darkgreen" d="M345.33,-446.75C345.33,-446.75 236.92,-446.75 236.92,-446.75 233.96,-446.75 231,-443.79 231,-440.83 231,-440.83 231,-434.92 231,-434.92 231,-431.96 233.96,-429 236.92,-429 236.92,-429 345.33,-429 345.33,-429 348.29,-429 351.25,-431.96 351.25,-434.92 351.25,-434.92 351.25,-440.83 351.25,-440.83 351.25,-443.79 348.29,-446.75 345.33,-446.75"/>
<text xml:space="preserve" text-anchor="start" x="239" y="-434.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffffcc">configuration.schema.mjs</text>
</a>
</g>
</g>
<!-- options.mjs -->
<g id="node13" class="node">
<title>options.mjs</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/options.mjs" xlink:title="options.mjs">
<path fill="#ffffcc" stroke="black" d="M462.71,-352.75C462.71,-352.75 412.04,-352.75 412.04,-352.75 409.08,-352.75 406.12,-349.79 406.12,-346.83 406.12,-346.83 406.12,-340.92 406.12,-340.92 406.12,-337.96 409.08,-335 412.04,-335 412.04,-335 462.71,-335 462.71,-335 465.67,-335 468.62,-337.96 468.62,-340.92 468.62,-340.92 468.62,-346.83 468.62,-346.83 468.62,-349.79 465.67,-352.75 462.71,-352.75"/>
<text xml:space="preserve" text-anchor="start" x="414.12" y="-340.2" font-family="Helvetica,sans-Serif" font-size="9.00">options.mjs</text>
</a>
</g>
</g>
<!-- configuration.schema.mjs&#45;&gt;options.mjs -->
<g id="edge9" class="edge">
<title>configuration.schema.mjs&#45;&gt;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M342.25,-428.52C342.25,-404.74 342.25,-343.88 342.25,-343.88 342.25,-343.88 396.67,-343.88 396.67,-343.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="396.67,-345.98 402.67,-343.88 396.67,-341.78 396.67,-345.98"/>
</g>
<!-- rule&#45;set.mjs -->
<g id="node14" class="node">
<title>rule&#45;set.mjs</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/rule-set.mjs" xlink:title="rule&#45;set.mjs">
<path fill="#ffffcc" stroke="black" d="M463.08,-539.75C463.08,-539.75 411.67,-539.75 411.67,-539.75 408.71,-539.75 405.75,-536.79 405.75,-533.83 405.75,-533.83 405.75,-527.92 405.75,-527.92 405.75,-524.96 408.71,-522 411.67,-522 411.67,-522 463.08,-522 463.08,-522 466.04,-522 469,-524.96 469,-527.92 469,-527.92 469,-533.83 469,-533.83 469,-536.79 466.04,-539.75 463.08,-539.75"/>
<text xml:space="preserve" text-anchor="start" x="413.75" y="-527.2" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;set.mjs</text>
</a>
</g>
</g>
<!-- configuration.schema.mjs&#45;&gt;rule&#45;set.mjs -->
<g id="edge10" class="edge">
<title>configuration.schema.mjs&#45;&gt;rule&#45;set.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M351.62,-441.56C385.6,-441.56 421.25,-441.56 421.25,-441.56 421.25,-441.56 421.25,-512.63 421.25,-512.63"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="419.15,-512.63 421.25,-518.63 423.35,-512.63 419.15,-512.63"/>
</g>
<!-- options.mjs&#45;&gt;violations.mjs -->
<g id="edge52" class="edge">
<title>options.mjs&#45;&gt;violations.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M468.8,-349.79C491.89,-349.79 519.25,-349.79 519.25,-349.79 519.25,-349.79 519.25,-590.42 519.25,-590.42 519.25,-590.42 553.42,-590.42 553.42,-590.42"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="553.42,-592.52 559.42,-590.42 553.42,-588.32 553.42,-592.52"/>
</g>
<!-- options.mjs&#45;&gt;cache&#45;options.mjs -->
<g id="edge41" class="edge">
<title>options.mjs&#45;&gt;cache&#45;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M453.25,-353.1C453.25,-375.92 453.25,-433.19 453.25,-433.19 453.25,-433.19 543.74,-433.19 543.74,-433.19"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="543.74,-435.29 549.74,-433.19 543.74,-431.09 543.74,-435.29"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;donot&#45;follow&#45;type.mjs -->
<g id="edge42" class="edge">
<title>options.mjs&#45;&gt;compound&#45;donot&#45;follow&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M468.96,-346.83C494.5,-346.83 526.25,-346.83 526.25,-346.83 526.25,-346.83 526.25,-386.52 526.25,-386.52"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="524.15,-386.52 526.25,-392.52 528.35,-386.52 524.15,-386.52"/>
</g>
<!-- options.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge50" class="edge">
<title>options.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M468.97,-340.92C566.03,-340.92 853.25,-340.92 853.25,-340.92 853.25,-340.92 853.25,-270.1 853.25,-270.1"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="855.35,-270.1 853.25,-264.1 851.15,-270.1 855.35,-270.1"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs -->
<g id="edge43" class="edge">
<title>options.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M429.25,-334.58C429.25,-287.1 429.25,-73.88 429.25,-73.88 429.25,-73.88 686.63,-73.88 686.63,-73.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.63,-75.98 692.63,-73.88 686.63,-71.78 686.63,-75.98"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;focus&#45;type.mjs -->
<g id="edge44" class="edge">
<title>options.mjs&#45;&gt;compound&#45;focus&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M445.25,-334.66C445.25,-306.16 445.25,-221.31 445.25,-221.31 445.25,-221.31 692.07,-221.31 692.07,-221.31"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="692.07,-223.41 698.07,-221.31 692.07,-219.21 692.07,-223.41"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;highlight&#45;type.mjs -->
<g id="edge45" class="edge">
<title>options.mjs&#45;&gt;compound&#45;highlight&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M461.25,-334.74C461.25,-325.6 461.25,-312.88 461.25,-312.88 461.25,-312.88 521.53,-312.88 521.53,-312.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="521.53,-314.98 527.53,-312.88 521.53,-310.78 521.53,-314.98"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs -->
<g id="edge46" class="edge">
<title>options.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M468.88,-337.96C537.08,-337.96 692.25,-337.96 692.25,-337.96 692.25,-337.96 692.25,-152.2 692.25,-152.2"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="694.35,-152.2 692.25,-146.2 690.15,-152.2 694.35,-152.2"/>
</g>
<!-- options.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs -->
<g id="edge47" class="edge">
<title>options.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M453.25,-334.5C453.25,-311.92 453.25,-256.31 453.25,-256.31 453.25,-256.31 686.16,-256.31 686.16,-256.31"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.16,-258.41 692.16,-256.31 686.16,-254.21 686.16,-258.41"/>
</g>
<!-- dependency&#45;type.mjs -->
<g id="node21" class="node">
<title>dependency&#45;type.mjs</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/dependency-type.mjs" xlink:title="dependency&#45;type.mjs">
<polygon fill="white" stroke="none" points="954.25,-618.75 850.5,-618.75 850.5,-601 954.25,-601 954.25,-618.75"/>
<polyline fill="none" stroke="black" points="850.5,-601 954.25,-601"/>
<text xml:space="preserve" text-anchor="start" x="858.5" y="-606.2" font-family="Helvetica,sans-Serif" font-size="9.00">dependency&#45;type.mjs</text>
</a>
</g>
</g>
<!-- options.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge48" class="edge">
<title>options.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M469.08,-343.88C567.2,-343.88 859.25,-343.88 859.25,-343.88 859.25,-343.88 859.25,-591.69 859.25,-591.69"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="857.15,-591.69 859.25,-597.69 861.35,-591.69 857.15,-591.69"/>
</g>
<!-- module&#45;systems&#45;type.mjs -->
<g id="node26" class="node">
<title>module&#45;systems&#45;type.mjs</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/module-systems-type.mjs" xlink:title="module&#45;systems&#45;type.mjs">
<polygon fill="white" stroke="none" points="658,-477.75 538.5,-477.75 538.5,-460 658,-460 658,-477.75"/>
<polyline fill="none" stroke="black" points="538.5,-460 658,-460"/>
<text xml:space="preserve" text-anchor="start" x="546.5" y="-465.2" font-family="Helvetica,sans-Serif" font-size="9.00">module&#45;systems&#45;type.mjs</text>
</a>
</g>
</g>
<!-- options.mjs&#45;&gt;module&#45;systems&#45;type.mjs -->
<g id="edge49" class="edge">
<title>options.mjs&#45;&gt;module&#45;systems&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M437.25,-353.05C437.25,-381.43 437.25,-465.92 437.25,-465.92 437.25,-465.92 529.27,-465.92 529.27,-465.92"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="529.27,-468.02 535.27,-465.92 529.27,-463.82 529.27,-468.02"/>
</g>
<!-- reporter&#45;options.mjs -->
<g id="node29" class="node">
<title>reporter&#45;options.mjs</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/reporter-options.mjs" xlink:title="reporter&#45;options.mjs">
<path fill="#ffffcc" stroke="black" d="M641.21,-169.75C641.21,-169.75 555.29,-169.75 555.29,-169.75 552.33,-169.75 549.38,-166.79 549.38,-163.83 549.38,-163.83 549.38,-157.92 549.38,-157.92 549.38,-154.96 552.33,-152 555.29,-152 555.29,-152 641.21,-152 641.21,-152 644.17,-152 647.12,-154.96 647.12,-157.92 647.12,-157.92 647.12,-163.83 647.12,-163.83 647.12,-166.79 644.17,-169.75 641.21,-169.75"/>
<text xml:space="preserve" text-anchor="start" x="557.38" y="-157.2" font-family="Helvetica,sans-Serif" font-size="9.00">reporter&#45;options.mjs</text>
</a>
</g>
</g>
<!-- options.mjs&#45;&gt;reporter&#45;options.mjs -->
<g id="edge51" class="edge">
<title>options.mjs&#45;&gt;reporter&#45;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M437.25,-334.7C437.25,-298.01 437.25,-163.83 437.25,-163.83 437.25,-163.83 540.04,-163.83 540.04,-163.83"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="540.04,-165.93 546.04,-163.83 540.04,-161.73 540.04,-165.93"/>
</g>
<!-- restrictions.mjs -->
<g id="node30" class="node">
<title>restrictions.mjs</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/restrictions.mjs" xlink:title="restrictions.mjs">
<path fill="#ffffcc" stroke="black" d="M794.21,-554.75C794.21,-554.75 729.29,-554.75 729.29,-554.75 726.33,-554.75 723.38,-551.79 723.38,-548.83 723.38,-548.83 723.38,-542.92 723.38,-542.92 723.38,-539.96 726.33,-537 729.29,-537 729.29,-537 794.21,-537 794.21,-537 797.17,-537 800.12,-539.96 800.12,-542.92 800.12,-542.92 800.12,-548.83 800.12,-548.83 800.12,-551.79 797.17,-554.75 794.21,-554.75"/>
<text xml:space="preserve" text-anchor="start" x="731.38" y="-542.2" font-family="Helvetica,sans-Serif" font-size="9.00">restrictions.mjs</text>
</a>
</g>
</g>
<!-- rule&#45;set.mjs&#45;&gt;restrictions.mjs -->
<g id="edge60" class="edge">
<title>rule&#45;set.mjs&#45;&gt;restrictions.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M437.25,-540C437.25,-543.59 437.25,-546.88 437.25,-546.88 437.25,-546.88 713.9,-546.88 713.9,-546.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="713.9,-548.98 719.9,-546.88 713.9,-544.78 713.9,-548.98"/>
</g>
<!-- severity&#45;type.mjs -->
<g id="node31" class="node">
<title>severity&#45;type.mjs</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/severity-type.mjs" xlink:title="severity&#45;type.mjs">
<polygon fill="white" stroke="none" points="944.5,-572.75 860.25,-572.75 860.25,-555 944.5,-555 944.5,-572.75"/>
<polyline fill="none" stroke="black" points="860.25,-555 944.5,-555"/>
<text xml:space="preserve" text-anchor="start" x="868.25" y="-560.2" font-family="Helvetica,sans-Serif" font-size="9.00">severity&#45;type.mjs</text>
</a>
</g>
</g>
<!-- rule&#45;set.mjs&#45;&gt;severity&#45;type.mjs -->
<g id="edge61" class="edge">
<title>rule&#45;set.mjs&#45;&gt;severity&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M469.33,-529.5C574.36,-529.5 902.25,-529.5 902.25,-529.5 902.25,-529.5 902.25,-545.82 902.25,-545.82"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="900.15,-545.82 902.25,-551.82 904.35,-545.82 900.15,-545.82"/>
</g>
<!-- cruise&#45;result.schema.mjs -->
<g id="node15" class="node">
<title>cruise&#45;result.schema.mjs</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/cruise-result.schema.mjs" xlink:title="cruise&#45;result.schema.mjs">
<path fill="darkgreen" stroke="darkgreen" d="M111.33,-644.75C111.33,-644.75 5.92,-644.75 5.92,-644.75 2.96,-644.75 0,-641.79 0,-638.83 0,-638.83 0,-632.92 0,-632.92 0,-629.96 2.96,-627 5.92,-627 5.92,-627 111.33,-627 111.33,-627 114.29,-627 117.25,-629.96 117.25,-632.92 117.25,-632.92 117.25,-638.83 117.25,-638.83 117.25,-641.79 114.29,-644.75 111.33,-644.75"/>
<text xml:space="preserve" text-anchor="start" x="8" y="-632.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffffcc">cruise&#45;result.schema.mjs</text>
</a>
</g>
</g>
<!-- folders.mjs -->
<g id="node16" class="node">
<title>folders.mjs</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/folders.mjs" xlink:title="folders.mjs">
<path fill="#ffffcc" stroke="black" d="M461.58,-660.75C461.58,-660.75 413.17,-660.75 413.17,-660.75 410.21,-660.75 407.25,-657.79 407.25,-654.83 407.25,-654.83 407.25,-648.92 407.25,-648.92 407.25,-645.96 410.21,-643 413.17,-643 413.17,-643 461.58,-643 461.58,-643 464.54,-643 467.5,-645.96 467.5,-648.92 467.5,-648.92 467.5,-654.83 467.5,-654.83 467.5,-657.79 464.54,-660.75 461.58,-660.75"/>
<text xml:space="preserve" text-anchor="start" x="415.25" y="-648.2" font-family="Helvetica,sans-Serif" font-size="9.00">folders.mjs</text>
</a>
</g>
</g>
<!-- cruise&#45;result.schema.mjs&#45;&gt;folders.mjs -->
<g id="edge11" class="edge">
<title>cruise&#45;result.schema.mjs&#45;&gt;folders.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M117.37,-640.5C223.72,-640.5 437.25,-640.5 437.25,-640.5 437.25,-640.5 437.25,-640.72 437.25,-640.72"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="435.15,-633.67 437.25,-639.67 439.35,-633.67 435.15,-633.67"/>
</g>
<!-- modules.mjs -->
<g id="node17" class="node">
<title>modules.mjs</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/modules.mjs" xlink:title="modules.mjs">
<path fill="#ffffcc" stroke="black" d="M465.33,-737.75C465.33,-737.75 409.42,-737.75 409.42,-737.75 406.46,-737.75 403.5,-734.79 403.5,-731.83 403.5,-731.83 403.5,-725.92 403.5,-725.92 403.5,-722.96 406.46,-720 409.42,-720 409.42,-720 465.33,-720 465.33,-720 468.29,-720 471.25,-722.96 471.25,-725.92 471.25,-725.92 471.25,-731.83 471.25,-731.83 471.25,-734.79 468.29,-737.75 465.33,-737.75"/>
<text xml:space="preserve" text-anchor="start" x="411.5" y="-725.2" font-family="Helvetica,sans-Serif" font-size="9.00">modules.mjs</text>
</a>
</g>
</g>
<!-- cruise&#45;result.schema.mjs&#45;&gt;modules.mjs -->
<g id="edge12" class="edge">
<title>cruise&#45;result.schema.mjs&#45;&gt;modules.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M58.25,-645.13C58.25,-668.66 58.25,-728.88 58.25,-728.88 58.25,-728.88 394.03,-728.88 394.03,-728.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="394.03,-730.98 400.03,-728.88 394.03,-726.78 394.03,-730.98"/>
</g>
<!-- revision&#45;data.mjs -->
<g id="node18" class="node">
<title>revision&#45;data.mjs</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/revision-data.mjs" xlink:title="revision&#45;data.mjs">
<path fill="#ffffcc" stroke="black" d="M211.08,-629.75C211.08,-629.75 137.17,-629.75 137.17,-629.75 134.21,-629.75 131.25,-626.79 131.25,-623.83 131.25,-623.83 131.25,-617.92 131.25,-617.92 131.25,-614.96 134.21,-612 137.17,-612 137.17,-612 211.08,-612 211.08,-612 214.04,-612 217,-614.96 217,-617.92 217,-617.92 217,-623.83 217,-623.83 217,-626.79 214.04,-629.75 211.08,-629.75"/>
<text xml:space="preserve" text-anchor="start" x="139.25" y="-617.2" font-family="Helvetica,sans-Serif" font-size="9.00">revision&#45;data.mjs</text>
</a>
</g>
</g>
<!-- cruise&#45;result.schema.mjs&#45;&gt;revision&#45;data.mjs -->
<g id="edge13" class="edge">
<title>cruise&#45;result.schema.mjs&#45;&gt;revision&#45;data.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M117.45,-638C146.02,-638 174.25,-638 174.25,-638 174.25,-638 174.25,-637.22 174.25,-637.22"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="176.35,-639.27 174.25,-633.27 172.15,-639.27 176.35,-639.27"/>
</g>
<!-- summary.mjs -->
<g id="node19" class="node">
<title>summary.mjs</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/summary.mjs" xlink:title="summary.mjs">
<path fill="#ffffcc" stroke="black" d="M203.21,-585.75C203.21,-585.75 145.04,-585.75 145.04,-585.75 142.08,-585.75 139.12,-582.79 139.12,-579.83 139.12,-579.83 139.12,-573.92 139.12,-573.92 139.12,-570.96 142.08,-568 145.04,-568 145.04,-568 203.21,-568 203.21,-568 206.17,-568 209.12,-570.96 209.12,-573.92 209.12,-573.92 209.12,-579.83 209.12,-579.83 209.12,-582.79 206.17,-585.75 203.21,-585.75"/>
<text xml:space="preserve" text-anchor="start" x="147.12" y="-573.2" font-family="Helvetica,sans-Serif" font-size="9.00">summary.mjs</text>
</a>
</g>
</g>
<!-- cruise&#45;result.schema.mjs&#45;&gt;summary.mjs -->
<g id="edge14" class="edge">
<title>cruise&#45;result.schema.mjs&#45;&gt;summary.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M58.25,-626.66C58.25,-610.06 58.25,-576.88 58.25,-576.88 58.25,-576.88 129.7,-576.88 129.7,-576.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="129.7,-578.98 135.7,-576.88 129.7,-574.78 129.7,-578.98"/>
</g>
<!-- folders.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs -->
<g id="edge20" class="edge">
<title>folders.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M467.92,-654.08C538.76,-654.08 708.25,-654.08 708.25,-654.08 708.25,-654.08 708.25,-655.88 708.25,-655.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="706.15,-655.88 708.25,-661.88 710.35,-655.88 706.15,-655.88"/>
</g>
<!-- folders.mjs&#45;&gt;rule&#45;summary.mjs -->
<g id="edge21" class="edge">
<title>folders.mjs&#45;&gt;rule&#45;summary.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M467.89,-644.94C467.89,-644.94 707.92,-644.94 707.92,-644.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="707.92,-647.04 713.92,-644.94 707.92,-642.84 707.92,-647.04"/>
</g>
<!-- experimental&#45;stats&#45;type.mjs -->
<g id="node25" class="node">
<title>experimental&#45;stats&#45;type.mjs</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/experimental-stats-type.mjs" xlink:title="experimental&#45;stats&#45;type.mjs">
<polygon fill="white" stroke="none" points="662.12,-691.75 534.38,-691.75 534.38,-674 662.12,-674 662.12,-691.75"/>
<polyline fill="none" stroke="black" points="534.38,-674 662.12,-674"/>
<text xml:space="preserve" text-anchor="start" x="542.38" y="-679.2" font-family="Helvetica,sans-Serif" font-size="9.00">experimental&#45;stats&#45;type.mjs</text>
</a>
</g>
</g>
<!-- folders.mjs&#45;&gt;experimental&#45;stats&#45;type.mjs -->
<g id="edge19" class="edge">
<title>folders.mjs&#45;&gt;experimental&#45;stats&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M467.92,-657.42C501.35,-657.42 550.25,-657.42 550.25,-657.42 550.25,-657.42 550.25,-664.66 550.25,-664.66"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="548.15,-664.66 550.25,-670.66 552.35,-664.66 548.15,-664.66"/>
</g>
<!-- dependencies.mjs -->
<g id="node20" class="node">
<title>dependencies.mjs</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/dependencies.mjs" xlink:title="dependencies.mjs">
<path fill="#ffffcc" stroke="black" d="M637.83,-753.75C637.83,-753.75 558.67,-753.75 558.67,-753.75 555.71,-753.75 552.75,-750.79 552.75,-747.83 552.75,-747.83 552.75,-741.92 552.75,-741.92 552.75,-738.96 555.71,-736 558.67,-736 558.67,-736 637.83,-736 637.83,-736 640.79,-736 643.75,-738.96 643.75,-741.92 643.75,-741.92 643.75,-747.83 643.75,-747.83 643.75,-750.79 640.79,-753.75 637.83,-753.75"/>
<text xml:space="preserve" text-anchor="start" x="560.75" y="-741.2" font-family="Helvetica,sans-Serif" font-size="9.00">dependencies.mjs</text>
</a>
</g>
</g>
<!-- modules.mjs&#45;&gt;dependencies.mjs -->
<g id="edge24" class="edge">
<title>modules.mjs&#45;&gt;dependencies.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M437.25,-738.1C437.25,-742.04 437.25,-745.75 437.25,-745.75 437.25,-745.75 543.52,-745.75 543.52,-745.75"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="543.52,-747.85 549.52,-745.75 543.52,-743.65 543.52,-747.85"/>
</g>
<!-- modules.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge25" class="edge">
<title>modules.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M471.41,-732C575.92,-732 885.25,-732 885.25,-732 885.25,-732 885.25,-628.08 885.25,-628.08"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="887.35,-628.08 885.25,-622.08 883.15,-628.08 887.35,-628.08"/>
</g>
<!-- modules.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs -->
<g id="edge27" class="edge">
<title>modules.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M437.25,-719.6C437.25,-702.9 437.25,-669.5 437.25,-669.5 437.25,-669.5 690.54,-669.5 690.54,-669.5"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="690.54,-671.6 696.54,-669.5 690.54,-667.4 690.54,-671.6"/>
</g>
<!-- modules.mjs&#45;&gt;rule&#45;summary.mjs -->
<g id="edge28" class="edge">
<title>modules.mjs&#45;&gt;rule&#45;summary.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M471.32,-724C491.91,-724 514.25,-724 514.25,-724 514.25,-724 514.25,-646.88 514.25,-646.88 514.25,-646.88 707.9,-646.88 707.9,-646.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="707.9,-648.98 713.9,-646.88 707.9,-644.78 707.9,-648.98"/>
</g>
<!-- modules.mjs&#45;&gt;experimental&#45;stats&#45;type.mjs -->
<g id="edge26" class="edge">
<title>modules.mjs&#45;&gt;experimental&#45;stats&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M471.75,-728C502.66,-728 543.25,-728 543.25,-728 543.25,-728 543.25,-701.03 543.25,-701.03"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="545.35,-701.03 543.25,-695.03 541.15,-701.03 545.35,-701.03"/>
</g>
<!-- summary.mjs&#45;&gt;violations.mjs -->
<g id="edge65" class="edge">
<title>summary.mjs&#45;&gt;violations.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M209.56,-575.17C311.49,-575.17 598.25,-575.17 598.25,-575.17 598.25,-575.17 598.25,-575.81 598.25,-575.81"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="596.15,-572.53 598.25,-578.53 600.35,-572.53 596.15,-572.53"/>
</g>
<!-- summary.mjs&#45;&gt;rule&#45;set.mjs -->
<g id="edge64" class="edge">
<title>summary.mjs&#45;&gt;rule&#45;set.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M186.25,-567.57C186.25,-554.12 186.25,-530.88 186.25,-530.88 186.25,-530.88 396.29,-530.88 396.29,-530.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="396.29,-532.98 402.29,-530.88 396.29,-528.78 396.29,-532.98"/>
</g>
<!-- options&#45;used.mjs -->
<g id="node27" class="node">
<title>options&#45;used.mjs</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/options-used.mjs" xlink:title="options&#45;used.mjs">
<path fill="#ffffcc" stroke="black" d="M328.08,-321.75C328.08,-321.75 254.17,-321.75 254.17,-321.75 251.21,-321.75 248.25,-318.79 248.25,-315.83 248.25,-315.83 248.25,-309.92 248.25,-309.92 248.25,-306.96 251.21,-304 254.17,-304 254.17,-304 328.08,-304 328.08,-304 331.04,-304 334,-306.96 334,-309.92 334,-309.92 334,-315.83 334,-315.83 334,-318.79 331.04,-321.75 328.08,-321.75"/>
<text xml:space="preserve" text-anchor="start" x="256.25" y="-309.2" font-family="Helvetica,sans-Serif" font-size="9.00">options&#45;used.mjs</text>
</a>
</g>
</g>
<!-- summary.mjs&#45;&gt;options&#45;used.mjs -->
<g id="edge63" class="edge">
<title>summary.mjs&#45;&gt;options&#45;used.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M162.25,-567.79C162.25,-521.37 162.25,-312.88 162.25,-312.88 162.25,-312.88 238.83,-312.88 238.83,-312.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="238.83,-314.98 244.83,-312.88 238.83,-310.78 238.83,-314.98"/>
</g>
<!-- dependencies.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge15" class="edge">
<title>dependencies.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M644.24,-750.2C733,-750.2 919.25,-750.2 919.25,-750.2 919.25,-750.2 919.25,-628.11 919.25,-628.11"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="921.35,-628.11 919.25,-622.11 917.15,-628.11 921.35,-628.11"/>
</g>
<!-- dependencies.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs -->
<g id="edge16" class="edge">
<title>dependencies.mjs&#45;&gt;mini&#45;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M644.09,-746.65C692.3,-746.65 761.25,-746.65 761.25,-746.65 761.25,-746.65 761.25,-692.12 761.25,-692.12"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="763.35,-692.12 761.25,-686.12 759.15,-692.12 763.35,-692.12"/>
</g>
<!-- module&#45;system&#45;type.mjs -->
<g id="node23" class="node">
<title>module&#45;system&#45;type.mjs</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/module-system-type.mjs" xlink:title="module&#45;system&#45;type.mjs">
<polygon fill="white" stroke="none" points="819.25,-586.75 704.25,-586.75 704.25,-569 819.25,-569 819.25,-586.75"/>
<polyline fill="none" stroke="black" points="704.25,-569 819.25,-569"/>
<text xml:space="preserve" text-anchor="start" x="712.25" y="-574.2" font-family="Helvetica,sans-Serif" font-size="9.00">module&#45;system&#45;type.mjs</text>
</a>
</g>
</g>
<!-- dependencies.mjs&#45;&gt;module&#45;system&#45;type.mjs -->
<g id="edge17" class="edge">
<title>dependencies.mjs&#45;&gt;module&#45;system&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M644.2,-739.55C661.58,-739.55 677.25,-739.55 677.25,-739.55 677.25,-739.55 677.25,-578.58 677.25,-578.58 677.25,-578.58 694.96,-578.58 694.96,-578.58"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="694.96,-580.68 700.96,-578.58 694.96,-576.48 694.96,-580.68"/>
</g>
<!-- dependencies.mjs&#45;&gt;rule&#45;summary.mjs -->
<g id="edge18" class="edge">
<title>dependencies.mjs&#45;&gt;rule&#45;summary.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M644.18,-743.1C663.79,-743.1 682.25,-743.1 682.25,-743.1 682.25,-743.1 682.25,-648.81 682.25,-648.81 682.25,-648.81 707.86,-648.81 707.86,-648.81"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="707.86,-650.91 713.86,-648.81 707.86,-646.71 707.86,-650.91"/>
</g>
<!-- mini&#45;dependency&#45;type.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge22" class="edge">
<title>mini&#45;dependency&#45;type.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M812.25,-664.71C812.25,-647.01 812.25,-609.88 812.25,-609.88 812.25,-609.88 841.18,-609.88 841.18,-609.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="841.18,-611.98 847.18,-609.88 841.18,-607.78 841.18,-611.98"/>
</g>
<!-- rule&#45;summary.mjs&#45;&gt;severity&#45;type.mjs -->
<g id="edge62" class="edge">
<title>rule&#45;summary.mjs&#45;&gt;severity&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M806.32,-641.88C825.34,-641.88 843.25,-641.88 843.25,-641.88 843.25,-641.88 843.25,-562 843.25,-562 843.25,-562 851.01,-562 851.01,-562"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="851.01,-564.1 857.01,-562 851.01,-559.9 851.01,-564.1"/>
</g>
<!-- module&#45;systems&#45;type.mjs&#45;&gt;module&#45;system&#45;type.mjs -->
<g id="edge23" class="edge">
<title>module&#45;systems&#45;type.mjs&#45;&gt;module&#45;system&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M658.29,-468.88C686.59,-468.88 714.25,-468.88 714.25,-468.88 714.25,-468.88 714.25,-559.55 714.25,-559.55"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="712.15,-559.55 714.25,-565.55 716.35,-559.55 712.15,-559.55"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;cache&#45;options.mjs -->
<g id="edge29" class="edge">
<title>options&#45;used.mjs&#45;&gt;cache&#45;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.12,-317.31C348.17,-317.31 360.25,-317.31 360.25,-317.31 360.25,-317.31 360.25,-437.38 360.25,-437.38 360.25,-437.38 543.62,-437.38 543.62,-437.38"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="543.62,-439.48 549.62,-437.38 543.62,-435.28 543.62,-439.48"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;donot&#45;follow&#45;type.mjs -->
<g id="edge30" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;donot&#45;follow&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.34,-310.66C402.74,-310.66 528.25,-310.66 528.25,-310.66 528.25,-310.66 528.25,-386.81 528.25,-386.81"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="526.15,-386.81 528.25,-392.81 530.35,-386.81 526.15,-386.81"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs -->
<g id="edge31" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M262.25,-303.63C262.25,-259.16 262.25,-69.44 262.25,-69.44 262.25,-69.44 686.65,-69.44 686.65,-69.44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.65,-71.54 692.65,-69.44 686.65,-67.34 686.65,-71.54"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;focus&#45;type.mjs -->
<g id="edge32" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;focus&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M305.25,-303.67C305.25,-279.64 305.25,-216.88 305.25,-216.88 305.25,-216.88 692.1,-216.88 692.1,-216.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="692.1,-218.98 698.1,-216.88 692.1,-214.78 692.1,-218.98"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;highlight&#45;type.mjs -->
<g id="edge33" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;highlight&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.48,-308.44C334.48,-308.44 521.51,-308.44 521.51,-308.44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="521.51,-310.54 527.51,-308.44 521.51,-306.34 521.51,-310.54"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs -->
<g id="edge34" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M277.25,-303.75C277.25,-267.28 277.25,-133.88 277.25,-133.88 277.25,-133.88 677.55,-133.88 677.55,-133.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="677.55,-135.98 683.55,-133.88 677.55,-131.78 677.55,-135.98"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs -->
<g id="edge35" class="edge">
<title>options&#45;used.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M319.25,-303.61C319.25,-286.55 319.25,-251.88 319.25,-251.88 319.25,-251.88 686.48,-251.88 686.48,-251.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.48,-253.98 692.48,-251.88 686.48,-249.78 686.48,-253.98"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;options.mjs -->
<g id="edge38" class="edge">
<title>options&#45;used.mjs&#45;&gt;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.45,-315.09C372.31,-315.09 421.25,-315.09 421.25,-315.09 421.25,-315.09 421.25,-325.74 421.25,-325.74"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="419.15,-325.74 421.25,-331.74 423.35,-325.74 419.15,-325.74"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge36" class="edge">
<title>options&#45;used.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M291.25,-322.08C291.25,-348.2 291.25,-420.88 291.25,-420.88 291.25,-420.88 858.25,-420.88 858.25,-420.88 858.25,-420.88 858.25,-591.48 858.25,-591.48"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="856.15,-591.48 858.25,-597.48 860.35,-591.48 856.15,-591.48"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;module&#45;systems&#45;type.mjs -->
<g id="edge37" class="edge">
<title>options&#45;used.mjs&#45;&gt;module&#45;systems&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.2,-319.53C346.31,-319.53 356.25,-319.53 356.25,-319.53 356.25,-319.53 356.25,-471.83 356.25,-471.83 356.25,-471.83 529.09,-471.83 529.09,-471.83"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="529.09,-473.93 535.09,-471.83 529.09,-469.73 529.09,-473.93"/>
</g>
<!-- output&#45;type.mjs -->
<g id="node28" class="node">
<title>output&#45;type.mjs</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/tools/schema/output-type.mjs" xlink:title="output&#45;type.mjs">
<polygon fill="white" stroke="none" points="476.5,-17.75 398.25,-17.75 398.25,0 476.5,0 476.5,-17.75"/>
<polyline fill="none" stroke="black" points="398.25,0 476.5,0"/>
<text xml:space="preserve" text-anchor="start" x="406.25" y="-5.2" font-family="Helvetica,sans-Serif" font-size="9.00">output&#45;type.mjs</text>
</a>
</g>
</g>
<!-- options&#45;used.mjs&#45;&gt;output&#45;type.mjs -->
<g id="edge39" class="edge">
<title>options&#45;used.mjs&#45;&gt;output&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M334.19,-306.22C369.69,-306.22 414.25,-306.22 414.25,-306.22 414.25,-306.22 414.25,-27.13 414.25,-27.13"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="416.35,-27.13 414.25,-21.13 412.15,-27.13 416.35,-27.13"/>
</g>
<!-- options&#45;used.mjs&#45;&gt;reporter&#45;options.mjs -->
<g id="edge40" class="edge">
<title>options&#45;used.mjs&#45;&gt;reporter&#45;options.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M291.25,-303.65C291.25,-270.29 291.25,-157.92 291.25,-157.92 291.25,-157.92 539.9,-157.92 539.9,-157.92"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="539.9,-160.02 545.9,-157.92 539.9,-155.82 539.9,-160.02"/>
</g>
<!-- reporter&#45;options.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge57" class="edge">
<title>reporter&#45;options.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M647.43,-163.83C733.47,-163.83 902.25,-163.83 902.25,-163.83 902.25,-163.83 902.25,-233.76 902.25,-233.76"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="900.15,-233.76 902.25,-239.76 904.35,-233.76 900.15,-233.76"/>
</g>
<!-- reporter&#45;options.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs -->
<g id="edge53" class="edge">
<title>reporter&#45;options.mjs&#45;&gt;compound&#45;exclude&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M598.25,-151.72C598.25,-130.23 598.25,-78.31 598.25,-78.31 598.25,-78.31 686.69,-78.31 686.69,-78.31"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.69,-80.41 692.69,-78.31 686.69,-76.21 686.69,-80.41"/>
</g>
<!-- reporter&#45;options.mjs&#45;&gt;compound&#45;focus&#45;type.mjs -->
<g id="edge54" class="edge">
<title>reporter&#45;options.mjs&#45;&gt;compound&#45;focus&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M614.25,-169.86C614.25,-184.63 614.25,-212.44 614.25,-212.44 614.25,-212.44 691.88,-212.44 691.88,-212.44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="691.88,-214.54 697.88,-212.44 691.88,-210.34 691.88,-214.54"/>
</g>
<!-- reporter&#45;options.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs -->
<g id="edge55" class="edge">
<title>reporter&#45;options.mjs&#45;&gt;compound&#45;include&#45;only&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M647.48,-157.92C669.36,-157.92 690.25,-157.92 690.25,-157.92 690.25,-157.92 690.25,-152.13 690.25,-152.13"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="692.35,-152.13 690.25,-146.13 688.15,-152.13 692.35,-152.13"/>
</g>
<!-- reporter&#45;options.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs -->
<g id="edge56" class="edge">
<title>reporter&#45;options.mjs&#45;&gt;compound&#45;reaches&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M582.25,-170.14C582.25,-192.47 582.25,-247.44 582.25,-247.44 582.25,-247.44 686.14,-247.44 686.14,-247.44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="686.14,-249.54 692.14,-247.44 686.14,-245.34 686.14,-249.54"/>
</g>
<!-- restrictions.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs -->
<g id="edge59" class="edge">
<title>restrictions.mjs&#45;&gt;re&#45;as&#45;strings&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M800.59,-542.92C826.28,-542.92 855.25,-542.92 855.25,-542.92 855.25,-542.92 855.25,-270.26 855.25,-270.26"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="857.35,-270.26 855.25,-264.26 853.15,-270.26 857.35,-270.26"/>
</g>
<!-- restrictions.mjs&#45;&gt;dependency&#45;type.mjs -->
<g id="edge58" class="edge">
<title>restrictions.mjs&#45;&gt;dependency&#45;type.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M800.46,-548.83C826.56,-548.83 856.25,-548.83 856.25,-548.83 856.25,-548.83 856.25,-591.58 856.25,-591.58"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="854.15,-591.58 856.25,-597.58 858.35,-591.58 854.15,-591.58"/>
</g>
</g>
</svg>
    <script>
      var gMode = new Mode();

var title2ElementMap = (function makeElementMap() {
  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  return new Title2ElementMap(edges, nodes);
})();

function getHoverHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function hoverHighlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (
      currentHighlightedTitle !== closestTitleText &&
      gMode.get() === gMode.HOVER
    ) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

function getSelectHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function selectHighlightHandler(pMouseEvent) {
    pMouseEvent.preventDefault();

    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (closestNodeOrEdge) {
      gMode.setToSelect();
    } else {
      gMode.setToHover();
    }
    if (currentHighlightedTitle !== closestTitleText) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}
function Mode() {
  var HOVER = 1;
  var SELECT = 2;

  function setToHover() {
    this._mode = HOVER;
  }
  function setToSelect() {
    this._mode = SELECT;
  }

  /**
   * @returns {number}
   */
  function get() {
    return this._mode || HOVER;
  }

  return {
    HOVER: HOVER,
    SELECT: SELECT,
    setToHover: setToHover,
    setToSelect: setToSelect,
    get: get,
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

function resetNodesAndEdges() {
  nodeListToArray(document.querySelectorAll(".current")).forEach(
    removeHighlight,
  );
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}

var gHints = {
  HIDDEN: 1,
  SHOWN: 2,
  state: 1, // === HIDDEN
  show: function () {
    document.getElementById("hints").removeAttribute("style");
    gHints.state = gHints.SHOWN;
  },
  hide: function () {
    document.getElementById("hints").style = "display:none";
    gHints.state = gHints.HIDDEN;
  },
  toggle: function () {
    if ((gHints.state || gHints.HIDDEN) === gHints.HIDDEN) {
      gHints.show();
    } else {
      gHints.hide();
    }
  },
};

/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
  if (pKeyboardEvent.key === "Escape") {
    resetNodesAndEdges();
    gMode.setToHover();
    gHints.hide();
  }
  if (pKeyboardEvent.key === "F1") {
    pKeyboardEvent.preventDefault();
    gHints.toggle();
  }
}

document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);
document.getElementById("close-hints").addEventListener("click", gHints.hide);
document.getElementById("button_help").addEventListener("click", gHints.toggle);
document.querySelector("svg").insertAdjacentHTML(
  "afterbegin",
  `<linearGradient id="edgeGradient">
      <stop offset="0%" stop-color="fuchsia"/>
      <stop offset="100%" stop-color="purple"/>
   </linearGradient>
  `,
);

// Add a small increment to the last value of the path to make gradients on
// horizontal paths work. Without them all browsers I tested with (firefox,
// chrome) do not render the gradient, but instead make the line transparent
// (or the color of the background, I haven't looked into it that deeply,
// but for the hack it doesn't matter which).
function skewLineABit(lDrawingInstructions) {
  var lLastValue = lDrawingInstructions.match(/(\d+\.?\d*)$/)[0];
  // Smaller values than .001 _should_ work as well, but don't in all
  // cases. Even this value is so small that it is not visible to the
  // human eye (tested with the two I have at my disposal).
  var lIncrement = 0.001;
  var lNewLastValue = parseFloat(lLastValue) + lIncrement;

  return lDrawingInstructions.replace(lLastValue, lNewLastValue);
}

nodeListToArray(document.querySelectorAll("path"))
  .filter(function (pElement) {
    return pElement.parentElement.classList.contains("edge");
  })
  .forEach(function (pElement) {
    pElement.attributes.d.value = skewLineABit(pElement.attributes.d.value);
  });

    </script>
  </body>
</html>
